import javax.swing.*;
import java.net.Socket;
import java.util.Arrays;
import java.util.SortedMap;

public class Text {
    public static void main(String[] args) {
        int[] array = {1,5,3,9,8};
        insertSort(array);
        System.out.println(Arrays.toString(array));
    }
    // 插入排序
    public static void insertSort(int[] array){
        for (int i = 1; i < array.length; i++) {
            int j = i-1;
            int tmp=array[i];
            for (; j >= 0; j--) {
                if(array[j]>tmp){
                    array[j+1]=array[j];
                }else {
                    //array[j+1]=tmp;
                    break;
                }
            }
            array[j+1]=tmp;
        }
    }
    // 检测插入排序花费的时
    public void textInsertSort(int[] array){
        // 对数组进行拷贝，防止其他排序用的时候已经排好序了
        array = Arrays.copyOf(array,array.length);

        long startTime = System.currentTimeMillis();
        //Sort.insertSort(array);
        long endTime = System.currentTimeMillis();
        System.out.println("插入排序耗费的时间"+(endTime-startTime));
    }
        // 希尔排序
    public static void shellSort(int[] array){
        // 确定每次的 gap 分为多少
        int gap = array.length;
        while (gap > 1){

        }
    }
    // 每层进行插入排序
    public void shell(int[] array,int gap){
        for (int i = gap; i < array.length; i++) {
            int j = i-gap;
            int tmp = i;
            for (; j > 0; j-=gap) {
                if(array[j] > tmp){
                    array[j+gap] = array[j];
                }else {
                    break;
                }
            }
            array[j+gap] = tmp;
        }
    }
    // 选择排序
    public static void selectSort(int[] array){
        // write code  here
    }


// 堆排序
    public static void heapSort(int[] array){
        // write code  here
    }

}
